如果有一位剛進醫院的實習醫生,你直接塞給他一張印滿密密麻麻數字的血液檢查報告,卻完全不告訴他正常人的參考數值、也不教他如何判斷數字高低的背後原因。
这位實習醫生大概只能對著數字發呆,或者給出一段語焉不詳、毫無臨床價值的廢話。
在 AI 世界裡也是一樣的道理!我們之前整理出了資料處理產線,能秒速抓出 AVI 評分、算出了大腦神經元裡的 Delta Score 訊號落差。但對 Gemini 大語言模型(LLM)來說,如果沒有經過嚴格的 「系統指令(System Instruction)」 培訓,它看到的依然只是一堆冷冰冰的數字。
接下來要開始進入 AI Agent 臨床大腦整合 ,我們要教大家如何在 Google AI Studio 中為 Gemini 植入「頂級基因醫師的臨床推理大腦」,讓它能讀懂 Python 後端傳來的數據包,並輸出充滿生物學邏輯的專業診斷報告!
在一個真正的智慧醫療系統中,後端程式碼與 AI 大語言模型扮演著完全不同的角色:
要讓 Gemini 成熟地進行臨床推理,我們在 Google AI Studio 設定 System Instruction(系統指令) 時,必須嚴格遵循三大鐵則:
Splicing(RNA 剪接)、CAGE(轉錄量)還是 ATAC(染色質開放度)。epilepsy 癲癇)吻合的器官(如大腦神經元)。| 訓練維度 | 沒設 System Instruction (傳統聊天 AI) | 設定專業 System Instruction (臨床 Agent) |
|---|---|---|
| 回應風格 | 講一堆客套廢話:「這是一個很複雜的變異,可能與許多因素有關……」 | 直奔主題、語氣專業且邏輯嚴密,明確給出機制結論。 |
| 資料解析 | 只會重複一遍數字,看不出分數背後的生物學意義。 | 辨識機制:「AVI 分數 24.7 高度危險,69% 風險源自大腦神經元隱藏剪接。」 |
| 系統整合 | 回傳純文字 Markdown,前端網頁無法解析欄位。 | 輸出乾淨 JSON,前端秒速轉化為顏色燈號與卡片! |
agent_clinical_brain.py)現在,把這套臨床推理邏輯打包成 Python 腳本 agent_clinical_brain.py。我們將利用 Google GenAI SDK,把之前快取管線產出的數據直接餵給設定好 System Instruction 的 Gemini 0 模型:
import os
import json
from dotenv import load_dotenv
import google.generativeai as genai
# 載入隱藏設定檔中的 Gemini API Key
load_dotenv()
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
# 1. 定義給 Gemini 的【靈魂系統指令 System Instruction】
CLINICAL_SYSTEM_INSTRUCTION = """
你是一位專精於非編碼區變異解析的臨床基因組學 AI 助理。
請針對傳入的 AlphaGenome 分析數據與病患臨床症狀(Phenotype),按照以下【思維鏈】進行臨床推理:
1. [風險評估]: 檢視 AVI PHRED 分數 (是否 >= 20)。
2. [機制解讀]: 解析 feature_attribution 中的主要驅動機制 (如 Cryptic Splicing, CAGE, ATAC)。
3. [組織與症狀對照]: 判斷該機制是否發生在與病患症狀 (如 epilepsy/hydro) 相關的特異性組織 (如 Brain/Neuron)。
4. [濕實驗建議]: 提出最適合的下游驗證實驗 (如 Minigene Reporter Assay)。
【限制】你必須嚴格回傳符合 JSON Schema 的結構化格式,不得包含任何 Markdown 裝飾文字。
"""
def generate_clinical_report(variant_data, patient_phenotype):
"""將後端資料與症狀打包,呼叫 Gemini 生成臨床推理報告"""
# 2. 初始化 Gemini 模型並設定 System Instruction
model = genai.GenerativeModel(
model_name="gemini-1.5-pro", # 或使用最新的 Gemini 模型
system_instruction=CLINICAL_SYSTEM_INSTRUCTION,
generation_config={"response_mime_type": "application/json"} # 強制 JSON 輸出
)
# 3. 組裝 Prompt 輸入數據包
user_prompt = f"""
請針對以下病患數據進行臨床推理:
【病患臨床症狀】: {patient_phenotype}
【AlphaGenome 後端數據】: {json.dumps(variant_data, ensure_ascii=False)}
"""
print("🧠 正在傳送數據給 Gemini 臨床大腦進行推理...")
response = model.generate_content(user_prompt)
return json.loads(response.text)
if __name__ == "__main__":
# 模擬 Day 20 後端快取管線產出的 DNM1 數據包
mock_pipeline_output = {
"variant_id": "chr9:128225994:G:A",
"avi_score": 24.7,
"top_drivers": [
{"feature_name": "Splicing_Cryptic_Acceptor", "contribution_weight": 0.69},
{"feature_name": "ATAC_Brain_Neuron", "contribution_weight": 0.20}
],
"delta_signal": "+0.85 (Splicing Increase in Glutamatergic Neurons)"
}
# 執行 Agent 臨床推理
clinical_report = generate_clinical_report(
variant_data=mock_pipeline_output,
patient_phenotype="六週大幼兒,出現難治型頑固癲癇 (Epileptic Encephalopathy)"
)
print("\n" + "="*50)
print("🩺 Gemini Agent 生成的臨床診斷推理報告 (JSON):")
print(json.dumps(clinical_report, ensure_ascii=False, indent=2))
print("="*50 + "\n")
執行這段程式碼後,Gemini 會像一位頂級基因醫師一樣,輸出結構完美的 JSON 診斷報告,清楚寫明:「此變異 AVI 評分 24.7(前 0.3% 高風險),強烈受大腦神經元隱藏剪接驅動(貢獻度 69%),完美解釋了六週大幼兒的癲癇症狀,建議進行 Minigene 剪接驗證實驗。」!